package create;

import com.sun.xml.internal.stream.util.ThreadLocalBufferAllocator;

/**
 * Created with IntelliJ IDEA.
 * ClassName: RunableDemo
 * Package: create
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 * Date: 2023-08-12
 * Time: 21:31
 */

//创建线程Runnable接口
public class RunnableDemo {
    public static void main(String[] args) {

        //创建自定义对象
        MyRunnable mr = new MyRunnable();
        //创建线程对象
        Thread t = new Thread(mr,"长江");
        Thread t1 = new Thread(new MyRunnable());
        t1.start();
        t.start();

        //创建一个类 实现 Runnable接口 再将创建Runnable实例
        //床给Thread

        //变形写法
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("变形写法");
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    //获取当前线程的名字
                    System.out.println(Thread.currentThread().getName() + ": " + i);
                }
            }
        },"变形").start();

    }
}

class MyRunnable implements Runnable {
    //Java是单继承 当无法继承Thread的时候 使用Runnable接口 重写run()
    @Override
    public void run() {
        System.out.println("Thread创建的第二种方式 实现Runnable");
    }

}

//两种方式的比对
//1.避免了单线程的局限性
//2.多个线程可以共享同一个接口实现类的对象，非常适合多个相同线程来处理同一份资源。
//3.增加程序的健壮性，实现解耦操作，代码可以被多个线程共享，代码和线程独立。